using Acme.MeiTuan.SDK.Api;

namespace Acme.MeiTuan.SDK.Request.Order;

public class ApplyPartRefundDto : MeiTuanSign
{

    /// <summary>
    /// 订单号
    /// </summary>
    public string order_id { get; set; }



    /// <summary>
    /// 部分退款的原因，此字段信息传商家发起本次部分退款的原因。
    /// </summary>
    public string? reason { get; set; }



    /// <summary>
    /// 退款类型，目前此字段适用于商家发起按克重退差价的流程，part_refund_type=3，即按差价退款。如不传或传其他值，则默认当前退款类型是按件进行部分退款。
    /// </summary>
    public int part_refund_type { get; set; }

    /// <summary>
    /// 部分退款商品sku数据集合的json格式数组
    /// </summary>
    public string food_data { get; set; }
    // [JsonIgnore]
    // public List<FoodData>? food_dataObj { get; set; }
}

public class FoodData
{
    /// <summary>
    /// APP方商品id，即商家中台系统里商品的编码（spu_code值），字段信息限定长度不超过128个字符。
    /// 注意：该字段将于2022年3月1日下线，请商家对接app_spu_code字段
    /// </summary>
    public string? app_food_code { get; set; }
    /// <summary>
    /// APP方商品id，即商家中台系统里商品的编码（spu_code值），字段信息限定长度不超过128个字符。
    /// </summary>
    public string? app_spu_code { get; set; }

    /// <summary>
    /// 商品sku唯一标识码。
    /// 如为单规格商品，可以不传此参数；如为多规格商品，必须上传要退款商品sku的sku_id。
    /// </summary>
    public string? sku_id { get; set; }



    /// <summary>
    /// /订单内商品行维度的商品标识id。
    /// 注意：若商品参加活动，对商品发起退差价时，请注意一定要上传item_id参数（可通过非称重商品：order/getPartRefundFoods 或称重商品：order/getUnitPartRefundFoods接口获取）。
    /// 关于item_id参数的重要作用，请参考发起部分退款接口优化的说明。
    /// </summary>
    public string? item_id { get; set; }


    /// <summary>
    /// 本次退款的商品数量：(1)当按件部分退款时，此字段必填，传入需退款商品sku的数量，为大于0的整数。
    /// (2)当part_refund_type=3时，即按克重退差价，则此字段非必填(如传了也不会生效)。
    /// </summary>
    public float? count { get; set; }


    /// <summary>
    /// 商品sku的实拣重量，单位是克/g，支持1位小数。(1)此字段信息上传本次退差价商品sku单件的实际拣货重量。
    /// (2)上传的实拣重量需小于商品sku的标价重量(同步商品时维护的重量信息)，且不能为负数。(3)如有多件商品sku需要退差价，需分别调用此接口录入每件商品sku的实拣重量信息分别发起退差价流程。(4)当part_refund_type=3时，
    /// 即按克重退差价，actual_weight字段必填；如part_refund_type不传或所传信息不为3时，即按件部分退款，不传actual_weight字段。
    /// </summary>
    public double? actual_weight { get; set; }
}